﻿// using GameFramework;
// using Gameplay.PVE;
// using UnityEngine;
// using Yoozoo.Mars.Got;
//
// /// <summary>
// /// 硬件分级适配
// /// [lvqq 20190522]
// /// </summary>
// public class ResolutionSetMode
// {
//     private const int SCR_720P_WIDTH = 1280;
//     private const int SCR_720P_HEIGHT = 720;
//     private const int SCR_1080P_WIDTH = 1920;
//     private const int SCR_1080P_HEIGHT = 1080;
//     private const int SCR_2K_WIDTH = 2048;
//     private const int SCR_2K_HEIGHT = 1080;
//
//     private int nOriginalWidth;//保存屏幕原始分辨率，以供硬件缩放时用
//     private int nOriginalHeight;
//
//     private float zoomRate;
//     
//     public void InitResolutionMode()
//     {
//         nOriginalWidth = Screen.width;
//         nOriginalHeight = Screen.height;
//         if (DeviceQuality.Instance != null)
//         {
//             DeviceQuality.Instance.RegisterAction(OnQualityChange);
//         }
//     }
//
//     private void OnQualityChange(QualityEnum quality)
//     {
// #if UNITY_ANDROID || UNITY_IOS
//         SetResolution(quality);
// #endif
//     }
//
//     public void SetResolution(QualityEnum curQuality)
//     {
//         Debug.LogWarning("SetResolution: " + curQuality);
//         Debug.LogWarning("screen.width: " + Screen.width + "height: " + Screen.height);
//         zoomRate = 1;
//         int screenWidth = nOriginalWidth;
//         int screenHeight = nOriginalHeight;
//         int rWidth = screenWidth;
//         int rHeight = screenHeight;
//         switch (curQuality)
//         {
//             //case GameFramework.Agent.QualityEnum.Low:
//             //    if (screenWidth > (SCR_720P_WIDTH * 0.75f))
//             //    {
//             //        zoomRate = (SCR_720P_WIDTH * 0.75f) / (float)screenWidth;
//             //    }
//             //    break;
//             case QualityEnum.Low:
//                 if (screenWidth > SCR_720P_WIDTH)
//                 {
//                     zoomRate = (SCR_720P_WIDTH) / (float)screenWidth;
//                 }
//                 break;
//             case QualityEnum.Middle:
//                 if (screenWidth > SCR_1080P_WIDTH)
//                 {
//                     zoomRate = SCR_1080P_WIDTH / (float)screenWidth;
//                 }
//                 break;
//             case QualityEnum.High:
//                 if (screenWidth > SCR_2K_WIDTH)
//                 {
//                     zoomRate = SCR_2K_WIDTH / (float)screenWidth;
//                 }
//                 else
//                 {
//                     zoomRate = SCR_1080P_WIDTH / (float)screenWidth;
//                 }
//                 break;
//             case QualityEnum.Perfect:
//                 if (screenWidth > SCR_2K_WIDTH)
//                 {
//                     zoomRate = SCR_2K_WIDTH / (float)screenWidth;
//                 }
//                 break;
//         }
//         rWidth = Mathf.RoundToInt(screenWidth * zoomRate);
//         rHeight = Mathf.RoundToInt(screenHeight * zoomRate);
//         Debug.LogWarning($"SetResolution: width: {rWidth}  height: {rHeight}");
//         Screen.SetResolution(rWidth, rHeight, true);
//         // //wwei@yoozoo.com 2020-04-10
//         // //==========================================================================
//         // if (curQuality == QualityEnum.Middle)
//         // {
//         //     rWidth = nOriginalWidth;
//         //     rHeight = nOriginalHeight;
//         //     //中画质使用最高1080P物理分辨率，通过视口缩放控制调整3D相机缩放至720P
//         //     if (screenWidth > SCR_1080P_WIDTH)
//         //     {
//         //         float zoomUiRate = SCR_1080P_WIDTH / (float)screenWidth;
//         //         
//         //         rWidth = Mathf.RoundToInt(screenWidth * zoomUiRate);
//         //         rHeight = Mathf.RoundToInt(screenHeight * zoomUiRate);
//         //
//         //         zoomRate = SCR_720P_WIDTH / (float)rWidth;
//         //     }
//         //     Screen.SetResolution(rWidth, rHeight, true);
//         //
//         //     var obs = GameObject.FindObjectsOfType<AfterEffectControl>();
//         //     foreach (var afc in obs)
//         //     {
//         //         afc.enabled = true;
//         //         afc.Scale = zoomRate;
//         //     }
//         //     // if (CameraManager.mainCamera)
//         //     // {
//         //     //     var afc = CameraManager.mainCamera.GetOrAddCompoment<AfterEffectControl>();
//         //     //     afc.enabled = true;
//         //     //     afc.Scale = zoomRate;
//         //     // }
//         //    
//         // }
//         // else
//         // {
//         //     var obs = GameObject.FindObjectsOfType<AfterEffectControl>();
//         //     foreach (var afc in obs)
//         //     {
//         //         afc.enabled = false;
//         //         afc.Scale = zoomRate;
//         //     }
//         //     ///其他画质使用原有调整物理分辨率，
//         //     // if (CameraManager.mainCamera)
//         //     // {
//         //     //     var afc = CameraManager.mainCamera.GetOrAddCompoment<AfterEffectControl>();
//         //     //     afc.enabled = false;
//         //     //     afc.Scale = zoomRate;
//         //     // }
//         //     
//         //     //Screen.SetResolution(rWidth, rHeight, true);
//         // }
//         // //临时塞到这里，pvecamera在执行本脚本的时候还没有被初始化
//         // DeviceQuality.Instance.ZoomScale = zoomRate;
//         //==========================================================================
//     }
//
//     // 设置其他相机的/ got的指挥官展示场景用
//     public static void SetCameraViewPortRect(Camera targetCmr)
//     {
//         if (targetCmr == null)
//         {
//             return;
//         }
//         float screenWidth = Screen.width;
//         float screenHeight = Screen.height;
//     
//         float offest = 0.0f;
//         float showH = 0.0f;
//         float startY = 0.0f;
//         if (screenHeight / screenWidth > 750.0f / 1334.0f)
//         {
//             showH = 750.0f * (screenWidth / 1334.0f);
//             offest = screenHeight - showH;
//             startY = offest / screenHeight;
//             targetCmr.rect = new Rect(0, startY / 2, 1, 1 - startY);
//         }
//     }
// }
